package main

import "fmt"

func main() { //默认情况下，Go 语言使用的是值传递，即在调用过程中不会影响到实际参数。
	/*v1, v2 := "阿金哥", 666
	a,b := swap(v1, v2)
	fmt.Println(a, b, v1, v2)*/

	var a = 20  /* 声明实际变量 */
	var ip *int /* 声明指针变量 */
	fmt.Printf("%v %x %d\n", ip, ip, ip)
	//fmt.Println(*ip)
	fmt.Println(&ip)
	ip = &a /* 指针变量的存储地址 */
	fmt.Printf("a 变量的地址是: %x\n", &a)
	/* 指针变量的存储地址 */
	fmt.Printf("ip 变量储存的指针地址: %x\n", ip)
	/* 使用指针访问值 */
	fmt.Printf("*ip 变量的值: %d\n", *ip)

}

func swap(x string, y int) (string, int) {
	x, y = "哈哈", 777
	return x, y
}

func array() {
	var abc = [...]int{1, 2, 3, 4, 5, 6}
	var f = true
	var array [10]*int
	fmt.Println(abc[0], f, len(abc), array)
}
